STC仿真芯片原理探讨

您所在的位置:网站首页 stc仿真器 电路 STC仿真芯片原理探讨

STC仿真芯片原理探讨

2024-06-15 07:58| 来源: 网络整理| 查看: 265

      最近在开发一个新项目,芯片用的是STC15F2K60S2,而程序一个老工程师用汇编写的,需要在上面增加和修改一些内容。以前用惯了C,改用汇编的话的确有点吃力,里面跳转语句很多,指令也不太熟悉,用点灯的方式调试起来相当吃力。

      后来想到要找一个类似jlink一样的调试器,但网上比较少,而且要好几百块。后来看到网上有人说用仿真器能够在keil里面能够单步调试、看寄存器的值,似乎这就是我要找的东西了。接下来就向STC的官网免费申请了几片样品,型号是:IAP15F2K61S2,刚好能够仿真STC15F2K60S2,而且还送了一个很不错的调试器,STC厂家的服务真不错呢!

      把芯片焊上去,对着教程准备仿真,结果折腾了一个早上都没仿真成功,老是提示出错;"connection to target system lost ! please restet your arget system and try again"和“ error:target dll has been cancelled. debugger aborted !",最后顺着错误提示百度到解决方案:http://blog.csdn.net/weifengdq/article/details/23036531,原来是烧录芯片时设置STC-isp的用户程序IRC的频率太快,所以导致老是失败。把频率改小后就能仿真成功,仿真速度挺快的,功能和jlink有得一拼,可以单步调试、下断点、看内存变量的值、寄存器的值。(测试过把频率改为11MHz也能进行仿真,如果直接用默认的11.0592MHz则不行)

      仿真芯片的仿真固件是保密的,但从实现的功能上看,能够猜出仿真器的大概的实现原理:利用往仿真芯片里烧录特制的固件,该固件负责在线烧录程序,把PC指针、PSW、各种寄存器的值和内存空间的值都发送给PC端,由Keil软件把这些数据解析出来。当我们把鼠标点击某一个变量的时候,Keil软件根据该变量的地址,发送一个请求该变量值的数据帧给仿真芯片,然后仿真芯片把读取的值回送给Keil把变量的值显示出来。程序的单步运行是把程序分成两段来运行,程序时刻在跑的是仿真固件的代码空间,当开始调试的时候,程序就跳到用户的代码空间里面运行,一旦点停止运行,程序就把用户代码空间的各种运行环境(PC指针,PSW寄存器)压栈,然后全力处理仿真程序;当点击运行键时,就把用户代码空间的运行环境出栈,重新开始执行用户程序。这个仿真器实际上相当于操作系统,能够自由切换用户空间和操作系统空间,切换的时候能够保存运行环境。至此,仿真器的原理大概就有了个清晰的认识了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3